import cv2
import numpy as np
from tkinter import *
from tkinter import filedialog, messagebox
from datetime import datetime
import os
import yaml
import util

# 从settings.yaml读取配置信息
# 加载yaml文件的内容并存储在内存中的settings变量
with open("settings.yaml", "r") as f:
    settings = yaml.safe_load(f)

# 获取配置信息
window_width = settings["window"]["width"]    # 主窗口宽度
window_height = settings["window"]["height"]  # 主窗口高度
compression_options = settings["compression_options"]  # 压缩选项

# 创建主窗口
window = Tk()
window.title("图像压缩")
window.geometry(f"{window_width}x{window_height}")  # 设置主窗口大小

# 创建并添加组件
select_button = Button(window, text="选择图像", command=lambda: util.select_image(
    selected_file_label), width=30)  # 创建选择图像按钮
select_button.pack(pady=10)  # 把按钮添加到主窗口，并设置垂直方向上的间距

selected_file_label = Label(window, text="未选择文件", fg="gray", width=50)  # 创建标签，显示选择的文件路径
selected_file_label.pack(pady=10)  # 把标签添加到主窗口，并设置垂直方向上的间距

compression_var = DoubleVar(window)  # 创建DoubleVar对象，存储压缩后的质量系数
compression_var.set(compression_options[0])  # 设置初始的质量系数
compression_menu = OptionMenu(window, compression_var, *compression_options)  # 创建下拉菜单
compression_menu.config(width=30)  # 设置下拉菜单的宽度
compression_menu.pack(pady=10)  # 把下拉菜单添加到主窗口，并设置垂直方向上的间距

compress_button = Button(
    window, text="开始压缩", command=lambda: util.compress_image(compression_var), width=30)  # 创建开始压缩按钮
compress_button.pack(pady=10)  # 把按钮添加到主窗口，并设置垂直方向上的间距

exit_button = Button(
    window, text="退出", command=lambda: util.quit_app(window), width=30)  # 创建退出按钮
exit_button.pack(pady=10)  # 把按钮添加到主窗口，并设置垂直方向上的间距

file_path = ""  # 初始化文件路径为空字符串

# 启动主事件循环
window.mainloop()
